﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Windows.Forms;

namespace FlowerPower
{
    public class DBcontroller
    {
        
        private SqlConnection myConnection;
        private SqlCommand myCommand = new SqlCommand();
                  
        public DBcontroller()
        {
            
           // string connectionstring = "";
           // SqlConnection myConnection;
           string username;
           username = Environment.UserName.ToString();
          // MessageBox.Show(username.ToString());
           // myConnection = new SqlConnection("Data Source=JVJ-Pc\\JVJ;Initial Catalog=FlowerPower;Integrated Security=SSPI;Server=JVJ-PC;Database=FlowerPower;Trusted_Connection=True");
           ///* myConnection = new SqlConnection("user id=WIN-9JM31EKCQ4Q\\user;" +
           //                       "password=;" +
           //                       @"server=WIN-9JM31EKCQ4Q\DMUSQLSERVER;" +
           //     // se når sql server instansen åbnes
           //                       "Trusted_Connection=yes;" +
           //                       "database=testdb; " +
           //                       "connection timeout=30");*/
            if (username == "JVJ")
            {
                myConnection = new SqlConnection("Data Source=JVJ-Pc\\JVJ;Initial Catalog=FlowerPower;Integrated Security=SSPI;Server=JVJ-PC;Database=FlowerPower;Trusted_Connection=True");
            }
            else if (username == "Ole Palm")
            {
                myConnection = new SqlConnection(//"user id=OLEPALM-THINK;" +
                    //"password=" + pw + ";" +
                                    "server=OlePalm-THINK;" +
                    // se når sql server instansen åbnes
                                    "Trusted_Connection=yes;" +
                                    "database=FlowerPower; " +
                                    "connection timeout=30");
            }
            else if (username == "user")
            {
                myConnection = new SqlConnection("Data Source=WIN-9JM31EKCQ4Q\\user;Initial Catalog=FlowerPower;Integrated Security=SSPI;Server=WIN-9JM31EKCQ4Q\\DMUSQLSERVER;Database=FlowerPower;Trusted_Connection=True");
            }
           // else
           // {
           //     connectionstring = "FEJL!";
           // }
            
        }

        #region vare
        
        public void OpretVare(string varenavn, int varePris, string vareBeskrivelse, string froetypenavn)
        {
            try
            {
                myConnection.Open();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            string insertSQL = "INSERT INTO Vare (varenavn, varePris, vareBeskrivelse, froetypenavn) VALUES ('" +
                                varenavn + "'," + varePris + ",'" + vareBeskrivelse + "','" + froetypenavn + "');";
            try
            {
                SqlDataReader myReader = null;
                myCommand.Connection = myConnection;
                myCommand.CommandText = insertSQL;
                myReader = myCommand.ExecuteReader();

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            finally
            {
                myConnection.Close();
            }
        }

        public void RetVare(int vareNummer, string froetypeNavn, string vareNavn, string vareBeskrivelse, int varePris)
        {

            try
            {
                myConnection.Open();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }

            string insertSQL = "UPDATE Vare SET varenavn='" + vareNavn + "', vareBeskrivelse='" + vareBeskrivelse + "', froetypenavn='" + froetypeNavn + "', varePris=" + varePris + " WHERE varenummer= " + vareNummer + ";";

            try
            {
                SqlDataReader myReader = null;
                myCommand.Connection = myConnection;
                myCommand.CommandText = insertSQL;
                myReader = myCommand.ExecuteReader();

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            finally
            {
                myConnection.Close();
            }
        }

        public void SletVare(string varenummer)
        {
            try
            {
                myConnection.Open();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }

            string sql = "DELETE FROM Vare WHERE varenummer=" + varenummer + ";";

            try
            {
                SqlDataReader myReader = null;
                myCommand.Connection = myConnection;
                myCommand.CommandText = sql;
                myReader = myCommand.ExecuteReader();

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            finally
            {
                myConnection.Close();
            }
        }

        #endregion

        #region FroeType

        public void OpretFroetype(string navn, string beskrivelse, string varegruppenavn)
        {
            try
            {
                myConnection.Open();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            string insertSQL = "INSERT INTO Froetype (navn, beskrivelse, varegruppeNavn) VALUES ('" +
                                navn + "','" + beskrivelse + "','" + varegruppenavn + "');";
            try
            {
                SqlDataReader myReader = null;
                myCommand.Connection = myConnection;
                myCommand.CommandText = insertSQL;
                myReader = myCommand.ExecuteReader();

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            finally
            {
                myConnection.Close();
            }
        }

        public void RetFroetype(string tidligereNavn, string tidligereBeskrivelse, string tidligereVaregruppeNavn, string nytNavn, string nyBeskrivelse, string nytvaregruppeNavn)
        {
            try
            {
                myConnection.Open();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }

            string updateSQL = "UPDATE Froetype SET navn='" + nytNavn + "', beskrivelse='" + nyBeskrivelse + "', varegruppeNavn='" + nytvaregruppeNavn + "' WHERE navn= '" + tidligereNavn + "';";
            
            if (tidligereNavn != nytNavn)
            {
                // Hvis frøtypenavnet er ændret skal varerne der er tildelt denne frøtype ha opdateret deres frøtypenavn
                string updateVareSQL = "UPDATE Vare SET froetypenavn='" + nytNavn + "' WHERE froetypenavn= '" + tidligereNavn + "';";

                // For at det kan lade sig gøre skal vi midlertidigt slå CHEK CONSTRAINT FK_Vare_Froetype fra på Vare tabellen
                string disableConstraint = "ALTER TABLE Vare NOCHECK CONSTRAINT FK_Vare_Froetype;";
 
                // Når opdateringen af Vare tabellen er færdig skal CONSTRAINT CHECK igen slåes til
                string enableConstraint = "ALTER TABLE Vare CHECK CONSTRAINT FK_Vare_Froetype;";

                updateSQL = disableConstraint + updateSQL + updateVareSQL + enableConstraint;
            }
            try
            {
                SqlDataReader myReader = null;
                myCommand.Connection = myConnection;
                myCommand.CommandText = updateSQL;
                myReader = myCommand.ExecuteReader();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            finally
            {
                myConnection.Close();
            }
        }

        public void SletFroetype(string navn)
        {
            try
            {
                myConnection.Open();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }

            string sql = "DELETE FROM Froetype WHERE navn='" + navn + "';";

            try
            {
                SqlDataReader myReader = null;
                myCommand.Connection = myConnection;
                myCommand.CommandText = sql;
                myReader = myCommand.ExecuteReader();

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            finally
            {
                myConnection.Close();
            }
        }

        public int FindAntalVarerTilknyttetFroetype(string froetypeNavn)
        {
            int antalVarerTilknyttetFroetypen = 0;

            try
            {
                myConnection.Open();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            string sql = "select COUNT(*) as antalVarerTilknyttetFroetype from Vare where froetypenavn = '" + froetypeNavn + "';";
            try
            {
                SqlDataReader myReader = null;
                myCommand.Connection = myConnection;
                myCommand.CommandText = sql;
                myReader = myCommand.ExecuteReader();

                while (myReader.Read()) // sålænge der er tupler i resultatet
                {
                    antalVarerTilknyttetFroetypen = Convert.ToInt32(myReader["antalVarerTilknyttetFroetype"].ToString());
                }

            }

            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            finally
            {
                myConnection.Close();
            }
            return antalVarerTilknyttetFroetypen;
        }

        public List<Froetype> IndlaesFroetyper(string vareGruppeNavn)
        {
            List<Froetype> froetyper = new List<Froetype>();

            try
            {
                myConnection.Open();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            string selectSQL = "SELECT * FROM Froetype WHERE varegruppeNavn ='" + vareGruppeNavn + "';";
            try
            {
                SqlDataReader myReader = null;
                myCommand.Connection = myConnection;
                myCommand.CommandText = selectSQL;
                myReader = myCommand.ExecuteReader();


                while (myReader.Read()) // sålænge der er tupler i resultatet
                {
                    string navn = myReader["navn"].ToString();
                    string beskrivelse = myReader["beskrivelse"].ToString();
                    string varegruppenavn = myReader["varegruppeNavn"].ToString();
                    froetyper.Add(new Froetype(navn, beskrivelse, varegruppenavn));
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            finally
            {
                myConnection.Close();
            }
            return froetyper;
        }

        public List<Froetype> IndlaesFroetyperUdfraKategori(string varegruppe)
        {
            List<Froetype> froetyper = new List<Froetype>();

            try
            {
                myConnection.Open();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            string selectSQL = "SELECT * FROM Froetype WHERE varegruppeNavn = '" + varegruppe + "';";
            try
            {
                SqlDataReader myReader = null;
                myCommand.Connection = myConnection;
                myCommand.CommandText = selectSQL;
                myReader = myCommand.ExecuteReader();


                while (myReader.Read()) // sålænge der er tupler i resultatet
                {
                    string navn = myReader["navn"].ToString();
                    string beskrivelse = myReader["beskrivelse"].ToString();
                    string varegruppenavn = myReader["varegruppeNavn"].ToString();
                    froetyper.Add(new Froetype(navn, beskrivelse, varegruppenavn));
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            finally
            {
                myConnection.Close();
            }
            return froetyper;
        }

        #endregion

        #region VareGruppe

        public void OpretVaregruppe(string navn, string beskrivelse)
        {
            try
            {
                myConnection.Open();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            string insertSQL = "INSERT INTO Varegruppe (navn, varegruppeBeskrivelse) VALUES ('" +
                                navn + "','" + beskrivelse + "');";
            try
            {
                SqlDataReader myReader = null;
                myCommand.Connection = myConnection;
                myCommand.CommandText = insertSQL;
                myReader = myCommand.ExecuteReader();

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            finally
            {
                myConnection.Close();
            }
        }

        public void RetVaregruppe(string tidligereNavn, string tidligereBeskrivelse, string nytNavn, string nyBeskrivelse)
        {
            try
            {
                myConnection.Open();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }

            string updateSQL = "UPDATE Varegruppe SET navn='" + nytNavn + "', varegruppeBeskrivelse='" + nyBeskrivelse + "' WHERE navn= '" + tidligereNavn + "';";

            if (tidligereNavn != nytNavn)
            {
                // Hvis varegruppenavnet er ændret skal frøtyperne der er tildelt denne varegruppe ha opdateret deres varegruppenavn
                string updateFroetypeSQL = "UPDATE Froetype SET varegruppeNavn='" + nytNavn + "' WHERE varegruppeNavn= '" + tidligereNavn + "';";

                // For at det kan lade sig gøre skal vi midlertidigt slå CHEK CONSTRAINT FK_Froetype_Varegruppe fra på Vare tabellen
                string disableConstraint = "ALTER TABLE Froetype NOCHECK CONSTRAINT FK_Froetype_Varegruppe;";

                // Når opdateringen af Vare tabellen er færdig skal CONSTRAINT CHECK igen slåes til
                string enableConstraint = "ALTER TABLE Froetype CHECK CONSTRAINT FK_Froetype_Varegruppe;";

                updateSQL = disableConstraint + updateSQL + updateFroetypeSQL + enableConstraint;
            }

            try
            {
                SqlDataReader myReader = null;
                myCommand.Connection = myConnection;
                myCommand.CommandText = updateSQL;
                myReader = myCommand.ExecuteReader();

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            finally
            {
                myConnection.Close();
            }
        }

        public void SletVaregruppe(string navn)
        {
            try
            {
                myConnection.Open();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }

            string insertSQL = "DELETE FROM Varegruppe WHERE navn='" + navn + "';";

            try
            {
                SqlDataReader myReader = null;
                myCommand.Connection = myConnection;
                myCommand.CommandText = insertSQL;
                myReader = myCommand.ExecuteReader();

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            finally
            {
                myConnection.Close();
            }
        }


        public List<Varegruppe> IndlaesVaregrupper()
        {
            List<Varegruppe> varegrupper = new List<Varegruppe>();
            
            try
            {
                myConnection.Open();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            string selectSQL = "SELECT * FROM Varegruppe;";
            try
            {
                SqlDataReader myReader = null;
                myCommand.Connection = myConnection;
                myCommand.CommandText = selectSQL;
                myReader = myCommand.ExecuteReader();
                
                
                while (myReader.Read()) // sålænge der er tupler i resultatet
                {
                    string navn = myReader["navn"].ToString();
                    string beskrivelse = myReader["varegruppeBeskrivelse"].ToString();
                    varegrupper.Add(new Varegruppe(navn, beskrivelse));
                }
               
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            finally
            {
                myConnection.Close();
            }
            return varegrupper;
        }

        public List<Varegruppe> SoegVaregruppe(string soegeord)
        {
            List<Varegruppe> varegrupper = new List<Varegruppe>();

            try
            {
                myConnection.Open();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            string selectSQL = "SELECT * FROM Varegruppe WHERE navn LIKE '%" + soegeord + "%';";
            try
            {
                SqlDataReader myReader = null;
                myCommand.Connection = myConnection;
                myCommand.CommandText = selectSQL;
                myReader = myCommand.ExecuteReader();


                while (myReader.Read()) // sålænge der er tupler i resultatet
                {
                    string navn = myReader["navn"].ToString();
                    string beskrivelse = myReader["varegruppeBeskrivelse"].ToString();
                    varegrupper.Add(new Varegruppe(navn, beskrivelse));
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            finally
            {
                myConnection.Close();
            }
            return varegrupper;
        }

        #endregion

        #region Kunde

        public void OpretKunde(string navn, string adresse, int postnummer, int telefonnummer, decimal rabat)
        {
            try
            {
                myConnection.Open();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            string insertSQL = "INSERT INTO Kunde (rabat, navn, adresse, postnummer, telefonnummer) VALUES (" + rabat + ",'" +
                                navn + "','" + adresse + "'," + postnummer + "," + telefonnummer + ");";
            try
            {
                SqlDataReader myReader = null;
                myCommand.Connection = myConnection;
                myCommand.CommandText = insertSQL;
                myReader = myCommand.ExecuteReader();

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            finally
            {
                myConnection.Close();
            }
        }

        public List<Kunde> IndlaesAlleKunder()
        {
            List<Kunde> alleKunder = new List<Kunde>();
            try
            {
                myConnection.Open();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            string selectSQL = "SELECT * FROM Kunde;";
            try
            {
                SqlDataReader myReader = null;
                myCommand.Connection = myConnection;
                myCommand.CommandText = selectSQL;
                myReader = myCommand.ExecuteReader();

                int taeller = 0;
                while (myReader.Read()) // sålænge der er tupler i resultatet
                {
                    
                    int kundenummer, telefonnummer, postnummer;
                    string navn, adresse;
                    double rabat;

                    kundenummer = Convert.ToInt32(myReader["kundenummer"]);
                    telefonnummer = Convert.ToInt32(myReader["telefonnummer"]);
                    postnummer = Convert.ToInt32(myReader["postnummer"]);
                    navn = myReader["navn"].ToString();
                    adresse = myReader["adresse"].ToString();
                    rabat = Convert.ToDouble(myReader["rabat"]);

                    alleKunder.Add(new Kunde(kundenummer, navn, adresse, postnummer, telefonnummer, rabat));
                    
                    //varegrupper[taeller] = myReader["navn"].ToString();
                    taeller++;
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            finally
            {
                myConnection.Close();
            }
            return alleKunder;
        }
        
        public List<Kunde> SoegKundeMedNavn(string soegeord)
        {
            List<Kunde> alleKunder = new List<Kunde>();
            try
            {
                myConnection.Open();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            string selectSQL = "SELECT * FROM Kunde WHERE navn LIKE '%" + soegeord + "%';";
            try
            {
                SqlDataReader myReader = null;
                myCommand.Connection = myConnection;
                myCommand.CommandText = selectSQL;
                myReader = myCommand.ExecuteReader();

                while (myReader.Read()) // sålænge der er tupler i resultatet
                {

                    int kundenummer, telefonnummer, postnummer;
                    string navn, adresse;
                    double rabat;

                    kundenummer = Convert.ToInt32(myReader["kundenummer"]);
                    telefonnummer = Convert.ToInt32(myReader["telefonnummer"]);
                    postnummer = Convert.ToInt32(myReader["postnummer"]);
                    navn = myReader["navn"].ToString();
                    adresse = myReader["adresse"].ToString();
                    rabat = Convert.ToDouble(myReader["rabat"]);

                    alleKunder.Add(new Kunde(kundenummer, navn, adresse, postnummer, telefonnummer, rabat));
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            finally
            {
                myConnection.Close();
            }
            return alleKunder;
        }

        public List<Kunde> SoegKundeMedTelefon(string soegeord)
        {
            List<Kunde> alleKunder = new List<Kunde>();
            try
            {
                myConnection.Open();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            string selectSQL = "SELECT * FROM Kunde WHERE telefonnummer LIKE '%" + soegeord + "%';";
            try
            {
                SqlDataReader myReader = null;
                myCommand.Connection = myConnection;
                myCommand.CommandText = selectSQL;
                myReader = myCommand.ExecuteReader();

                while (myReader.Read()) // sålænge der er tupler i resultatet
                {

                    int kundenummer, telefonnummer, postnummer;
                    string navn, adresse;
                    double rabat;

                    kundenummer = Convert.ToInt32(myReader["kundenummer"]);
                    telefonnummer = Convert.ToInt32(myReader["telefonnummer"]);
                    postnummer = Convert.ToInt32(myReader["postnummer"]);
                    navn = myReader["navn"].ToString();
                    adresse = myReader["adresse"].ToString();
                    rabat = Convert.ToDouble(myReader["rabat"]);

                    alleKunder.Add(new Kunde(kundenummer, navn, adresse, postnummer, telefonnummer, rabat));
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            finally
            {
                myConnection.Close();
            }
            return alleKunder;
        }

        public List<Kunde> SoegKundeMedKundenummer(string soegeord)
        {
            List<Kunde> alleKunder = new List<Kunde>();
            try
            {
                myConnection.Open();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            string selectSQL = "SELECT * FROM Kunde WHERE kundenummer LIKE '%" + soegeord + "%';";
            try
            {
                SqlDataReader myReader = null;
                myCommand.Connection = myConnection;
                myCommand.CommandText = selectSQL;
                myReader = myCommand.ExecuteReader();

                while (myReader.Read()) // sålænge der er tupler i resultatet
                {

                    int kundenummer, telefonnummer, postnummer;
                    string navn, adresse;
                    double rabat;

                    kundenummer = Convert.ToInt32(myReader["kundenummer"]);
                    telefonnummer = Convert.ToInt32(myReader["telefonnummer"]);
                    postnummer = Convert.ToInt32(myReader["postnummer"]);
                    navn = myReader["navn"].ToString();
                    adresse = myReader["adresse"].ToString();
                    rabat = Convert.ToDouble(myReader["rabat"]);

                    alleKunder.Add(new Kunde(kundenummer, navn, adresse, postnummer, telefonnummer, rabat));
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            finally
            {
                myConnection.Close();
            }
            return alleKunder;
        }
        
        public Kunde IndlaesKundeUdfraKundenummer(int kundenummer)
        {
            Kunde minKunde = null;
            try
            {
                myConnection.Open();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            string selectSQL = "SELECT * FROM Kunde WHERE kundenummer = " + kundenummer + ";";
            try
            {
                SqlDataReader myReader = null;
                myCommand.Connection = myConnection;
                myCommand.CommandText = selectSQL;
                myReader = myCommand.ExecuteReader();

                int taeller = 0;
                while (myReader.Read()) // sålænge der er tupler i resultatet
                {

                    int telefonnummer, postnummer;
                    string navn, adresse;
                    double rabat;

                    kundenummer = Convert.ToInt32(myReader["kundenummer"]);
                    telefonnummer = Convert.ToInt32(myReader["telefonnummer"]);
                    postnummer = Convert.ToInt32(myReader["postnummer"]);
                    navn = myReader["navn"].ToString();
                    adresse = myReader["adresse"].ToString();
                    rabat = Convert.ToDouble(myReader["rabat"]);

                    minKunde = new Kunde(kundenummer, navn, adresse, postnummer, telefonnummer, rabat);

                    //varegrupper[taeller] = myReader["navn"].ToString();
                    taeller++;
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            finally
            {
                myConnection.Close();
            }
            return minKunde;
        }

        public Kunde IndlaesKundeUdfraNavn(string navn)
        {
            Kunde minKunde = null;
            try
            {
                myConnection.Open();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            string selectSQL = "SELECT * FROM Kunde WHERE navn = " + navn + ";";
            try
            {
                SqlDataReader myReader = null;
                myCommand.Connection = myConnection;
                myCommand.CommandText = selectSQL;
                myReader = myCommand.ExecuteReader();

                int taeller = 0;
                while (myReader.Read()) // sålænge der er tupler i resultatet
                {

                    int kundenummer, telefonnummer, postnummer;
                    string adresse;
                    double rabat;

                    kundenummer = Convert.ToInt32(myReader["kundenummer"]);
                    telefonnummer = Convert.ToInt32(myReader["telefonnummer"]);
                    postnummer = Convert.ToInt32(myReader["postnummer"]);
                    navn = myReader["navn"].ToString();
                    adresse = myReader["adresse"].ToString();
                    rabat = Convert.ToDouble(myReader["rabat"]);

                    minKunde = new Kunde(kundenummer, navn, adresse, postnummer, telefonnummer, rabat);

                    //varegrupper[taeller] = myReader["navn"].ToString();
                    taeller++;
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            finally
            {
                myConnection.Close();
            }
            return minKunde;
        }

        public Kunde IndlaesKundeUdfraTlf(int telefonnummer)
        {
            Kunde minKunde = null;
            try
            {
                myConnection.Open();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            string selectSQL = "SELECT * FROM Kunde WHERE telefonnummer = " + telefonnummer + ";";
            try
            {
                SqlDataReader myReader = null;
                myCommand.Connection = myConnection;
                myCommand.CommandText = selectSQL;
                myReader = myCommand.ExecuteReader();

                int taeller = 0;
                while (myReader.Read()) // sålænge der er tupler i resultatet
                {

                    int kundenummer, postnummer;
                    string navn, adresse;
                    double rabat;

                    kundenummer = Convert.ToInt32(myReader["kundenummer"]);
                    telefonnummer = Convert.ToInt32(myReader["telefonnummer"]);
                    postnummer = Convert.ToInt32(myReader["postnummer"]);
                    navn = myReader["navn"].ToString();
                    adresse = myReader["adresse"].ToString();
                    rabat = Convert.ToDouble(myReader["rabat"]);

                    minKunde = new Kunde(kundenummer, navn, adresse, postnummer, telefonnummer, rabat);

                    //varegrupper[taeller] = myReader["navn"].ToString();
                    taeller++;
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            finally
            {
                myConnection.Close();
            }
            return minKunde;
        }

        public Kunde IndlaesNyestIndsatteKunde()
        {
            Kunde minKunde = null;
            try
            {
                myConnection.Open();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            string selectSQL = "SELECT TOP 1 * FROM Kunde order by kundenummer desc;";
            try
            {
                SqlDataReader myReader = null;
                myCommand.Connection = myConnection;
                myCommand.CommandText = selectSQL;
                myReader = myCommand.ExecuteReader();


                while (myReader.Read()) // sålænge der er tupler i resultatet
                {

                    int kundenummer, postnummer, telefonnummer;
                    string navn, adresse;
                    double rabat;

                    kundenummer = Convert.ToInt32(myReader["kundenummer"]);
                    telefonnummer = Convert.ToInt32(myReader["telefonnummer"]);
                    postnummer = Convert.ToInt32(myReader["postnummer"]);
                    navn = myReader["navn"].ToString();
                    adresse = myReader["adresse"].ToString();
                    rabat = Convert.ToDouble(myReader["rabat"]);

                    minKunde = new Kunde(kundenummer, navn, adresse, postnummer, telefonnummer, rabat);

                    //varegrupper[taeller] = myReader["navn"].ToString();

                }


            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            finally
            {
                myConnection.Close();
            }
            return minKunde;
        }
        
        #endregion

        #region Ordre

        public List<Vare> IndlaesVareUdfraFroetype(string froetype)
        {
            List<Vare> varer = new List<Vare>();

            try
            {
                myConnection.Open();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            string selectSQL = "SELECT * FROM Vare WHERE froetypenavn = '" + froetype + "';";
            try
            {
                SqlDataReader myReader = null;
                myCommand.Connection = myConnection;
                myCommand.CommandText = selectSQL;
                myReader = myCommand.ExecuteReader();


                while (myReader.Read()) // sålænge der er tupler i resultatet
                {
                    int varenummer = Convert.ToInt32(myReader["varenummer"]);
                    string varenavn = myReader["varenavn"].ToString();
                    int varePris = Convert.ToInt32(myReader["varePris"].ToString());
                    string vareBeskrivelse = myReader["vareBeskrivelse"].ToString();
                    string froetypenavn = myReader["froetypenavn"].ToString();
                    varer.Add(new Vare(varenummer, varenavn, varePris, vareBeskrivelse, froetypenavn));
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            finally
            {
                myConnection.Close();
            }
            return varer;
        }
        
        public string IndlaesByUdfraPostnummer(int postnummer)
        {
            string bynavn = "";
            try
            {
                myConnection.Open();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            string selectSQL = "SELECT bynavn FROM PostBy WHERE postnummer = " + postnummer + ";";
            try
            {
                SqlDataReader myReader = null;
                myCommand.Connection = myConnection;
                myCommand.CommandText = selectSQL;
                myReader = myCommand.ExecuteReader();

                
                while (myReader.Read()) // sålænge der er tupler i resultatet
                {
                    bynavn = myReader["bynavn"].ToString();
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            finally
            {
                myConnection.Close();
            }
            return bynavn;
        }
        
        public void OpretOrdre(int kundenummer, DateTime ordredato) 
        {
            try
            {
                myConnection.Open();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            string insertSQL = "INSERT INTO Ordre (kundenummer, ordredato) VALUES (" +
                                kundenummer + ",'" + ordredato + "');";
            try
            {
                SqlDataReader myReader = null;
                myCommand.Connection = myConnection;
                myCommand.CommandText = insertSQL;
                myReader = myCommand.ExecuteReader();

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            finally
            {
                myConnection.Close();
            }
        }
        
        public void OpretOrdreLinie(int varenummer, int ordrenummer)
        {
            try
            {
                myConnection.Open();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            string insertSQL = "INSERT INTO Ordre_Vare (varenr, ordrenummer) VALUES (" +
                                varenummer + "," + ordrenummer + ");";
            try
            {
                SqlDataReader myReader = null;
                myCommand.Connection = myConnection;
                myCommand.CommandText = insertSQL;
                myReader = myCommand.ExecuteReader();

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            finally
            {
                myConnection.Close();
            }
        }
        
        public void OpretFaktura(int ordrenummer)
        {
            try
            {
                myConnection.Open();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            string insertSQL = "INSERT INTO Faktura (ordrenummer) VALUES (" + ordrenummer + ");";
            try
            {
                SqlDataReader myReader = null;
                myCommand.Connection = myConnection;
                myCommand.CommandText = insertSQL;
                myReader = myCommand.ExecuteReader();

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            finally
            {
                myConnection.Close();
            }
        }

        public int HentNyesteOrdrenummer()
        {
            int ordrenummer = 0;
            try
            {
                myConnection.Open();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            string selectSQL = "SELECT TOP 1 * FROM Ordre order by ordrenummer desc;";
            try
            {
                SqlDataReader myReader = null;
                myCommand.Connection = myConnection;
                myCommand.CommandText = selectSQL;
                myReader = myCommand.ExecuteReader();


                while (myReader.Read()) // sålænge der er tupler i resultatet
                {
                    ordrenummer = Convert.ToInt32(myReader["ordrenummer"]);
                }


            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            finally
            {
                myConnection.Close();
            }
            return ordrenummer;
        }

        #endregion

        
    }
}
